/*    1:     */ package org.jetbrains.io;
/*    2:     */ 
/*    3:     */

import com.google.gson.JsonParseException;
import com.google.gson.stream.JsonToken;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.io.Closeable;

/*    4:     */
/*    5:     */
/*    6:     */
/*    7:     */
/*    8:     */ 
/*    9:     */ public final class JsonReaderEx
/*   10:     */   implements Closeable
/*   11:     */ {
/*   12:  12 */   private static final char[] a = ")]}'\n".toCharArray();
/*   13:     */   private static final long b = -922337203685477580L;
/*   14:     */   private static final int c = 0;
/*   15:     */   private static final int d = 1;
/*   16:     */   private static final int e = 2;
/*   17:     */   private static final int f = 3;
/*   18:     */   private static final int g = 4;
/*   19:     */   private static final int h = 5;
/*   20:     */   private static final int i = 6;
/*   21:     */   private static final int j = 7;
/*   22:     */   private static final int k = 8;
/*   23:     */   private static final int l = 9;
/*   24:     */   private static final int m = 10;
/*   25:     */   private static final int n = 11;
/*   26:     */   private static final int o = 12;
/*   27:     */   private static final int p = 13;
/*   28:     */   private static final int q = 14;
/*   29:     */   private static final int r = 15;
/*   30:     */   private static final int s = 16;
/*   31:     */   private static final int t = 17;
/*   32:     */   private static final int u = 0;
/*   33:     */   private static final int v = 1;
/*   34:     */   private static final int w = 2;
/*   35:     */   private static final int x = 3;
/*   36:     */   private static final int y = 4;
/*   37:     */   private static final int z = 5;
/*   38:     */   private static final int A = 6;
/*   39:     */   private static final int B = 7;
/*   40:     */   private final CharSequence C;
/*   41:  49 */   private boolean D = false;
/*   42:     */   private int E;
/*   43:     */   private final int F;
/*   44:  54 */   private int G = 0;
/*   45:     */   private long H;
/*   46:     */   private int I;
/*   47:     */   private String J;
/*   48:  78 */   private int[] K = new int[32];
/*   49:  79 */   private int L = 0;
/*   50:     */   private StringBuilder M;
/*   51:     */   
/*   52:     */   public JsonReaderEx(@NotNull CharSequence paramCharSequence)
/*   53:     */   {
/*   54:  87 */     this(paramCharSequence, 0);
/*   55:     */   }
/*   56:     */   
/*   57:     */   public JsonReaderEx(@NotNull CharSequence paramCharSequence, int paramInt)
/*   58:     */   {
/*   59:  91 */     this(paramCharSequence, paramInt, 6);
/*   60:     */   }
/*   61:     */   
/*   62:     */   private JsonReaderEx(@NotNull CharSequence paramCharSequence, int paramInt1, int paramInt2)
/*   63:     */   {
/*   64:  95 */     this.C = paramCharSequence;
/*   65:  96 */     this.E = paramInt1;
/*   66:  97 */     this.F = paramCharSequence.length();
/*   67:  98 */     this.K[(this.L++)] = paramInt2;
/*   68:     */   }
/*   69:     */   
/*   70:     */   @Nullable
/*   71:     */   public JsonReaderEx subReader()
/*   72:     */   {
/*   73: 150 */     JsonToken localJsonToken = peek();
/*   74: 151 */     switch (1.$SwitchMap$com$google$gson$stream$JsonToken[localJsonToken.ordinal()])
/*   75:     */     {
/*   76:     */     case 1: 
/*   77:     */     case 2: 
/*   78:     */     case 3: 
/*   79:     */     case 4: 
/*   80:     */     case 5: 
/*   81:     */       break;
/*   82:     */     case 6: 
/*   83: 160 */       return null;
/*   84:     */     default: 
/*   85: 162 */       throw b("Cannot create sub reader, next token " + localJsonToken + " is not value");
/*   86:     */     }
/*   87: 165 */     JsonReaderEx localJsonReaderEx = new JsonReaderEx(this.C, this.E, this.K[(this.L - 1)]);
/*   88: 166 */     localJsonReaderEx.G = this.G;
/*   89: 167 */     localJsonReaderEx.H = this.H;
/*   90: 168 */     localJsonReaderEx.I = this.I;
/*   91: 169 */     localJsonReaderEx.J = this.J;
/*   92: 170 */     return localJsonReaderEx;
/*   93:     */   }
/*   94:     */   
/*   95:     */   public final void setLenient(boolean paramBoolean)
/*   96:     */   {
/*   97: 174 */     this.D = paramBoolean;
/*   98:     */   }
/*   99:     */   
/*  100:     */   public final JsonReaderEx lenient(boolean paramBoolean)
/*  101:     */   {
/*  102: 178 */     this.D = paramBoolean;
/*  103: 179 */     return this;
/*  104:     */   }
/*  105:     */   
/*  106:     */   public final boolean isLenient()
/*  107:     */   {
/*  108: 184 */     return this.D;
/*  109:     */   }
/*  110:     */   
/*  111:     */   public void beginArray()
/*  112:     */   {
/*  113: 192 */     int i1 = this.G;
/*  114: 193 */     if (i1 == 0) {
/*  115: 194 */       i1 = a();
/*  116:     */     }
/*  117: 196 */     if (i1 == 3)
/*  118:     */     {
/*  119: 197 */       a(1);
/*  120: 198 */       this.G = 0;
/*  121:     */     }
/*  122:     */     else
/*  123:     */     {
/*  124: 201 */       throw b("Expected BEGIN_ARRAY but was " + peek());
/*  125:     */     }
/*  126:     */   }
/*  127:     */   
/*  128:     */   public void endArray()
/*  129:     */   {
/*  130: 210 */     int i1 = this.G;
/*  131: 211 */     if (i1 == 0) {
/*  132: 212 */       i1 = a();
/*  133:     */     }
/*  134: 214 */     if (i1 == 4)
/*  135:     */     {
/*  136: 215 */       this.L -= 1;
/*  137: 216 */       this.G = 0;
/*  138:     */     }
/*  139:     */     else
/*  140:     */     {
/*  141: 219 */       throw b("Expected END_ARRAY but was " + peek());
/*  142:     */     }
/*  143:     */   }
/*  144:     */   
/*  145:     */   public void beginObject()
/*  146:     */   {
/*  147: 228 */     int i1 = this.G;
/*  148: 229 */     if (i1 == 0) {
/*  149: 230 */       i1 = a();
/*  150:     */     }
/*  151: 232 */     if (i1 == 1)
/*  152:     */     {
/*  153: 233 */       a(3);
/*  154: 234 */       this.G = 0;
/*  155:     */     }
/*  156:     */     else
/*  157:     */     {
/*  158: 237 */       throw b("Expected BEGIN_OBJECT but was " + peek());
/*  159:     */     }
/*  160:     */   }
/*  161:     */   
/*  162:     */   public void endObject()
/*  163:     */   {
/*  164: 246 */     int i1 = this.G;
/*  165: 247 */     if (i1 == 0) {
/*  166: 248 */       i1 = a();
/*  167:     */     }
/*  168: 250 */     if (i1 == 2)
/*  169:     */     {
/*  170: 251 */       this.L -= 1;
/*  171: 252 */       this.G = 0;
/*  172:     */     }
/*  173:     */     else
/*  174:     */     {
/*  175: 255 */       throw new IllegalStateException("Expected END_OBJECT but was " + peek());
/*  176:     */     }
/*  177:     */   }
/*  178:     */   
/*  179:     */   public boolean hasNext()
/*  180:     */   {
/*  181: 263 */     int i1 = this.G;
/*  182: 264 */     if (i1 == 0) {
/*  183: 265 */       i1 = a();
/*  184:     */     }
/*  185: 267 */     return (i1 != 2) && (i1 != 4);
/*  186:     */   }
/*  187:     */   
/*  188:     */   public JsonToken peek()
/*  189:     */   {
/*  190: 274 */     int i1 = this.G;
/*  191: 275 */     if (i1 == 0) {
/*  192: 276 */       i1 = a();
/*  193:     */     }
/*  194: 279 */     switch (i1)
/*  195:     */     {
/*  196:     */     case 1: 
/*  197: 281 */       return JsonToken.BEGIN_OBJECT;
/*  198:     */     case 2: 
/*  199: 283 */       return JsonToken.END_OBJECT;
/*  200:     */     case 3: 
/*  201: 285 */       return JsonToken.BEGIN_ARRAY;
/*  202:     */     case 4: 
/*  203: 287 */       return JsonToken.END_ARRAY;
/*  204:     */     case 12: 
/*  205:     */     case 13: 
/*  206:     */     case 14: 
/*  207: 291 */       return JsonToken.NAME;
/*  208:     */     case 5: 
/*  209:     */     case 6: 
/*  210: 294 */       return JsonToken.BOOLEAN;
/*  211:     */     case 7: 
/*  212: 296 */       return JsonToken.NULL;
/*  213:     */     case 8: 
/*  214:     */     case 9: 
/*  215:     */     case 10: 
/*  216:     */     case 11: 
/*  217: 301 */       return JsonToken.STRING;
/*  218:     */     case 15: 
/*  219:     */     case 16: 
/*  220: 304 */       return JsonToken.NUMBER;
/*  221:     */     case 17: 
/*  222: 306 */       return JsonToken.END_DOCUMENT;
/*  223:     */     }
/*  224: 308 */     throw new AssertionError();
/*  225:     */   }
/*  226:     */   
/*  227:     */   private int a()
/*  228:     */   {
/*  229: 313 */     int i1 = this.K[(this.L - 1)];
/*  230: 314 */     if (i1 == 1)
/*  231:     */     {
/*  232: 315 */       this.K[(this.L - 1)] = 2;
/*  233:     */     }
/*  234: 317 */     else if (i1 == 2)
/*  235:     */     {
/*  236: 319 */       i2 = a(true);
/*  237: 320 */       switch (i2)
/*  238:     */       {
/*  239:     */       case 93: 
/*  240: 322 */         return this.G = 4;
/*  241:     */       case 59: 
/*  242: 324 */         i();
/*  243:     */       case 44: 
/*  244:     */         break;
/*  245:     */       default: 
/*  246: 328 */         throw b("Unterminated array");
/*  247:     */       }
/*  248:     */     }
/*  249:     */     else
/*  250:     */     {
/*  251: 331 */       if ((i1 == 3) || (i1 == 5))
/*  252:     */       {
/*  253: 332 */         this.K[(this.L - 1)] = 4;
/*  254: 334 */         if (i1 == 5)
/*  255:     */         {
/*  256: 335 */           i2 = a(true);
/*  257: 336 */           switch (i2)
/*  258:     */           {
/*  259:     */           case 125: 
/*  260: 338 */             return this.G = 2;
/*  261:     */           case 59: 
/*  262: 340 */             i();
/*  263:     */           case 44: 
/*  264:     */             break;
/*  265:     */           default: 
/*  266: 344 */             throw b("Unterminated object");
/*  267:     */           }
/*  268:     */         }
/*  269: 347 */         i2 = a(true);
/*  270: 348 */         switch (i2)
/*  271:     */         {
/*  272:     */         case 34: 
/*  273: 350 */           return this.G = 13;
/*  274:     */         case 39: 
/*  275: 352 */           i();
/*  276: 353 */           return this.G = 12;
/*  277:     */         case 125: 
/*  278: 355 */           if (i1 != 5) {
/*  279: 356 */             return this.G = 2;
/*  280:     */           }
/*  281: 359 */           throw b("Expected name");
/*  282:     */         }
/*  283: 362 */         i();
/*  284: 363 */         this.E -= 1;
/*  285: 364 */         if (a((char)i2)) {
/*  286: 365 */           return this.G = 14;
/*  287:     */         }
/*  288: 368 */         throw b("Expected name");
/*  289:     */       }
/*  290: 372 */       if (i1 == 4)
/*  291:     */       {
/*  292: 373 */         this.K[(this.L - 1)] = 5;
/*  293:     */         
/*  294: 375 */         i2 = a(true);
/*  295: 376 */         switch (i2)
/*  296:     */         {
/*  297:     */         case 58: 
/*  298:     */           break;
/*  299:     */         case 61: 
/*  300: 380 */           i();
/*  301: 381 */           if ((this.E < this.F) && (this.C.charAt(this.E) == '>')) {
/*  302: 382 */             this.E += 1;
/*  303:     */           }
/*  304:     */           break;
/*  305:     */         default: 
/*  306: 386 */           throw b("Expected ':'");
/*  307:     */         }
/*  308:     */       }
/*  309: 389 */       else if (i1 == 6)
/*  310:     */       {
/*  311: 390 */         if (this.D) {
/*  312: 391 */           d();
/*  313:     */         }
/*  314: 393 */         this.K[(this.L - 1)] = 7;
/*  315:     */       }
/*  316: 395 */       else if (i1 == 7)
/*  317:     */       {
/*  318: 396 */         i2 = a(false);
/*  319: 397 */         if (i2 == -1) {
/*  320: 398 */           return this.G = 17;
/*  321:     */         }
/*  322: 401 */         i();
/*  323: 402 */         this.E -= 1;
/*  324:     */       }
/*  325: 405 */       else if (i1 == 8)
/*  326:     */       {
/*  327: 406 */         throw new IllegalStateException("JsonReader is closed");
/*  328:     */       }
/*  329:     */     }
/*  330: 409 */     int i2 = a(true);
/*  331: 410 */     switch (i2)
/*  332:     */     {
/*  333:     */     case 93: 
/*  334: 412 */       if (i1 == 1) {
/*  335: 413 */         return this.G = 4;
/*  336:     */       }
/*  337:     */     case 44: 
/*  338:     */     case 59: 
/*  339: 419 */       if ((i1 == 1) || (i1 == 2))
/*  340:     */       {
/*  341: 420 */         i();
/*  342: 421 */         this.E -= 1;
/*  343: 422 */         return this.G = 7;
/*  344:     */       }
/*  345: 425 */       throw b("Unexpected value");
/*  346:     */     case 39: 
/*  347: 428 */       i();
/*  348: 429 */       return this.G = 8;
/*  349:     */     case 34: 
/*  350: 431 */       if (this.L == 1) {
/*  351: 432 */         i();
/*  352:     */       }
/*  353: 434 */       return this.G = 9;
/*  354:     */     case 91: 
/*  355: 436 */       return this.G = 3;
/*  356:     */     case 123: 
/*  357: 438 */       return this.G = 1;
/*  358:     */     }
/*  359: 440 */     this.E -= 1;
/*  360: 443 */     if (this.L == 1) {
/*  361: 444 */       i();
/*  362:     */     }
/*  363: 447 */     int i3 = b();
/*  364: 448 */     if (i3 != 0) {
/*  365: 449 */       return i3;
/*  366:     */     }
/*  367: 452 */     i3 = c();
/*  368: 453 */     if (i3 != 0) {
/*  369: 454 */       return i3;
/*  370:     */     }
/*  371: 457 */     if (!a(this.C.charAt(this.E))) {
/*  372: 458 */       throw b("Expected value");
/*  373:     */     }
/*  374: 461 */     i();
/*  375: 462 */     return this.G = 10;
/*  376:     */   }
/*  377:     */   
/*  378:     */   private int b()
/*  379:     */   {
/*  380: 467 */     int i1 = this.C.charAt(this.E);
/*  381:     */     String str1;
/*  382:     */     String str2;
/*  383:     */     int i2;
/*  384: 471 */     if ((i1 == 116) || (i1 == 84))
/*  385:     */     {
/*  386: 472 */       str1 = "true";
/*  387: 473 */       str2 = "TRUE";
/*  388: 474 */       i2 = 5;
/*  389:     */     }
/*  390: 476 */     else if ((i1 == 102) || (i1 == 70))
/*  391:     */     {
/*  392: 477 */       str1 = "false";
/*  393: 478 */       str2 = "FALSE";
/*  394: 479 */       i2 = 6;
/*  395:     */     }
/*  396: 481 */     else if ((i1 == 110) || (i1 == 78))
/*  397:     */     {
/*  398: 482 */       str1 = "null";
/*  399: 483 */       str2 = "NULL";
/*  400: 484 */       i2 = 7;
/*  401:     */     }
/*  402:     */     else
/*  403:     */     {
/*  404: 487 */       return 0;
/*  405:     */     }
/*  406: 491 */     int i3 = str1.length();
/*  407: 492 */     for (int i4 = 1; i4 < i3; i4++)
/*  408:     */     {
/*  409: 493 */       if (this.E + i4 >= this.F) {
/*  410: 494 */         return 0;
/*  411:     */       }
/*  412: 496 */       i1 = this.C.charAt(this.E + i4);
/*  413: 497 */       if ((i1 != str1.charAt(i4)) && (i1 != str2.charAt(i4))) {
/*  414: 498 */         return 0;
/*  415:     */       }
/*  416:     */     }
/*  417: 502 */     if ((this.E + i3 < this.F) && (a(this.C.charAt(this.E + i3)))) {
/*  418: 503 */       return 0;
/*  419:     */     }
/*  420: 507 */     this.E += i3;
/*  421: 508 */     return this.G = i2;
/*  422:     */   }
/*  423:     */   
/*  424:     */   private int c()
/*  425:     */   {
/*  426: 514 */     CharSequence localCharSequence = this.C;
/*  427: 515 */     int i1 = this.E;
/*  428: 516 */     int i2 = this.F;
/*  429:     */     
/*  430: 518 */     long l1 = 0L;
/*  431: 519 */     int i3 = 0;
/*  432: 520 */     int i4 = 1;
/*  433: 521 */     int i5 = 0;
/*  434:     */     
/*  435: 523 */     int i6 = 0;
/*  436: 526 */     for (;; i6++)
/*  437:     */     {
/*  438: 527 */       if (i1 + i6 == i2)
/*  439:     */       {
/*  440: 528 */         if (i6 == this.F) {
/*  441: 531 */           return 0;
/*  442:     */         }
/*  443: 533 */         i1 = this.E;
/*  444: 534 */         i2 = this.F;
/*  445:     */       }
/*  446: 537 */       char c1 = localCharSequence.charAt(i1 + i6);
/*  447: 538 */       switch (c1)
/*  448:     */       {
/*  449:     */       case '-': 
/*  450: 540 */         if (i5 == 0)
/*  451:     */         {
/*  452: 541 */           i3 = 1;
/*  453: 542 */           i5 = 1;
/*  454:     */         }
/*  455: 545 */         else if (i5 == 5)
/*  456:     */         {
/*  457: 546 */           i5 = 6;
/*  458:     */         }
/*  459:     */         else
/*  460:     */         {
/*  461: 549 */           return 0;
/*  462:     */         }
/*  463:     */         break;
/*  464:     */       case '+': 
/*  465: 552 */         if (i5 == 5) {
/*  466: 553 */           i5 = 6;
/*  467:     */         } else {
/*  468: 556 */           return 0;
/*  469:     */         }
/*  470:     */         break;
/*  471:     */       case 'E': 
/*  472:     */       case 'e': 
/*  473: 560 */         if ((i5 == 2) || (i5 == 4)) {
/*  474: 561 */           i5 = 5;
/*  475:     */         } else {
/*  476: 564 */           return 0;
/*  477:     */         }
/*  478:     */         break;
/*  479:     */       case '.': 
/*  480: 567 */         if (i5 == 2) {
/*  481: 568 */           i5 = 3;
/*  482:     */         } else {
/*  483: 571 */           return 0;
/*  484:     */         }
/*  485:     */         break;
/*  486:     */       default: 
/*  487: 574 */         if ((c1 < '0') || (c1 > '9'))
/*  488:     */         {
/*  489: 575 */           if (!a(c1)) {
/*  490:     */             break label364;
/*  491:     */           }
/*  492: 578 */           return 0;
/*  493:     */         }
/*  494: 580 */         if ((i5 == 1) || (i5 == 0))
/*  495:     */         {
/*  496: 581 */           l1 = -(c1 - '0');
/*  497: 582 */           i5 = 2;
/*  498:     */         }
/*  499: 584 */         else if (i5 == 2)
/*  500:     */         {
/*  501: 585 */           if (l1 == 0L) {
/*  502: 586 */             return 0;
/*  503:     */           }
/*  504: 588 */           long l2 = l1 * 10L - (c1 - '0');
/*  505: 589 */           i4 &= ((l1 > -922337203685477580L) || ((l1 == -922337203685477580L) && (l2 < l1)) ? 1 : 0);
/*  506:     */           
/*  507: 591 */           l1 = l2;
/*  508:     */         }
/*  509: 593 */         else if (i5 == 3)
/*  510:     */         {
/*  511: 594 */           i5 = 4;
/*  512:     */         }
/*  513: 596 */         else if ((i5 == 5) || (i5 == 6))
/*  514:     */         {
/*  515: 597 */           i5 = 7;
/*  516:     */         }
/*  517:     */         break;
/*  518:     */       }
/*  519:     */     }
/*  520:     */     label364:
/*  521: 603 */     if ((i5 == 2) && (i4 != 0) && ((l1 != -9223372036854775808L) || (i3 != 0)))
/*  522:     */     {
/*  523: 604 */       this.H = (i3 != 0 ? l1 : -l1);
/*  524: 605 */       this.E += i6;
/*  525: 606 */       return this.G = 15;
/*  526:     */     }
/*  527: 608 */     if ((i5 == 2) || (i5 == 4) || (i5 == 7))
/*  528:     */     {
/*  529: 609 */       this.I = i6;
/*  530: 610 */       return this.G = 16;
/*  531:     */     }
/*  532: 613 */     return 0;
/*  533:     */   }
/*  534:     */   
/*  535:     */   private void d()
/*  536:     */   {
/*  537: 622 */     a(true);
/*  538: 623 */     this.E -= 1;
/*  539: 625 */     if (this.E + a.length > this.F) {
/*  540: 626 */       return;
/*  541:     */     }
/*  542: 629 */     for (int i1 = 0; i1 < a.length; i1++) {
/*  543: 630 */       if (this.C.charAt(this.E + i1) != a[i1]) {
/*  544: 631 */         return;
/*  545:     */       }
/*  546:     */     }
/*  547: 636 */     this.E += a.length;
/*  548:     */   }
/*  549:     */   
/*  550:     */   private boolean a(char paramChar)
/*  551:     */   {
/*  552: 640 */     switch (paramChar)
/*  553:     */     {
/*  554:     */     case '#': 
/*  555:     */     case '/': 
/*  556:     */     case ';': 
/*  557:     */     case '=': 
/*  558:     */     case '\\': 
/*  559: 646 */       i();
/*  560:     */     case '\t': 
/*  561:     */     case '\n': 
/*  562:     */     case '\f': 
/*  563:     */     case '\r': 
/*  564:     */     case ' ': 
/*  565:     */     case ',': 
/*  566:     */     case ':': 
/*  567:     */     case '[': 
/*  568:     */     case ']': 
/*  569:     */     case '{': 
/*  570:     */     case '}': 
/*  571: 658 */       return false;
/*  572:     */     }
/*  573: 660 */     return true;
/*  574:     */   }
/*  575:     */   
/*  576:     */   public String nextName()
/*  577:     */   {
/*  578: 668 */     int i1 = this.G;
/*  579: 669 */     if (i1 == 0) {
/*  580: 670 */       i1 = a();
/*  581:     */     }
/*  582:     */     String str;
/*  583: 673 */     if (i1 == 14) {
/*  584: 674 */       str = e();
/*  585: 676 */     } else if (i1 == 12) {
/*  586: 677 */       str = b('\'');
/*  587: 679 */     } else if (i1 == 13) {
/*  588: 680 */       str = b('"');
/*  589:     */     } else {
/*  590: 683 */       throw b("Expected a name but was " + peek());
/*  591:     */     }
/*  592: 685 */     this.G = 0;
/*  593: 686 */     return str;
/*  594:     */   }
/*  595:     */   
/*  596:     */   public CharSequence nextNameAsCharSequence()
/*  597:     */   {
/*  598: 691 */     return nextName();
/*  599:     */   }
/*  600:     */   
/*  601:     */   private static final class MyCharSequence
/*  602:     */     implements CharSequence
/*  603:     */   {
/*  604:     */     private final CharSequence a;
/*  605:     */     private final int b;
/*  606:     */     private final int c;
/*  607:     */     
/*  608:     */     public MyCharSequence(CharSequence paramCharSequence, int paramInt1, int paramInt2)
/*  609:     */     {
/*  610: 701 */       this.a = paramCharSequence;
/*  611: 702 */       this.b = paramInt1;
/*  612: 703 */       this.c = paramInt2;
/*  613:     */     }
/*  614:     */     
/*  615:     */     public int length()
/*  616:     */     {
/*  617: 708 */       return this.c;
/*  618:     */     }
/*  619:     */     
/*  620:     */     public char charAt(int paramInt)
/*  621:     */     {
/*  622: 713 */       return this.a.charAt(this.b + paramInt);
/*  623:     */     }
/*  624:     */     
/*  625:     */     public CharSequence subSequence(int paramInt1, int paramInt2)
/*  626:     */     {
/*  627: 718 */       if (paramInt2 - paramInt1 > this.c) {
/*  628: 719 */         throw new StringIndexOutOfBoundsException(paramInt2);
/*  629:     */       }
/*  630: 721 */       return this.a.subSequence(this.b + paramInt1, this.b + paramInt2);
/*  631:     */     }
/*  632:     */     
/*  633:     */     @NotNull
/*  634:     */     public String toString()
/*  635:     */     {
/*  636: 727 */       String tmp25_22 = this.a.subSequence(this.b, this.a.length()).toString();
/*  637: 727 */       if (tmp25_22 == null) {
/*  638: 727 */         throw new IllegalStateException(String.format("@NotNull method %s.%s must not return null", new Object[] { "org/jetbrains/io/JsonReaderEx$MyCharSequence", "toString" }));
/*  639:     */       }
/*  640: 727 */       return tmp25_22;
/*  641:     */     }
/*  642:     */     
/*  643:     */     public boolean equals(Object paramObject)
/*  644:     */     {
/*  645: 732 */       if (!(paramObject instanceof CharSequence)) {
/*  646: 733 */         return false;
/*  647:     */       }
/*  648: 736 */       CharSequence localCharSequence = (CharSequence)paramObject;
/*  649: 737 */       if (localCharSequence.length() != this.c) {
/*  650: 738 */         return false;
/*  651:     */       }
/*  652: 740 */       for (int i = 0; i < this.c; i++) {
/*  653: 741 */         if (localCharSequence.charAt(i) != charAt(i)) {
/*  654: 742 */           return false;
/*  655:     */         }
/*  656:     */       }
/*  657: 745 */       return true;
/*  658:     */     }
/*  659:     */   }
/*  660:     */   
/*  661:     */   public String nextAsString()
/*  662:     */   {
/*  663: 750 */     return peek() == JsonToken.STRING ? nextString() : null;
/*  664:     */   }
/*  665:     */   
/*  666:     */   public String nextString()
/*  667:     */   {
/*  668: 754 */     return nextString(false);
/*  669:     */   }
/*  670:     */   
/*  671:     */   public String nextString(boolean paramBoolean)
/*  672:     */   {
/*  673: 766 */     int i1 = this.G;
/*  674: 767 */     if (i1 == 0) {
/*  675: 768 */       i1 = a();
/*  676:     */     }
/*  677:     */     String str;
/*  678: 771 */     if (i1 == 10)
/*  679:     */     {
/*  680: 772 */       str = e();
/*  681:     */     }
/*  682: 774 */     else if (i1 == 8)
/*  683:     */     {
/*  684: 775 */       str = b('\'');
/*  685:     */     }
/*  686: 777 */     else if (i1 == 9)
/*  687:     */     {
/*  688: 778 */       str = b('"');
/*  689:     */     }
/*  690: 780 */     else if (i1 == 11)
/*  691:     */     {
/*  692: 781 */       str = this.J;
/*  693: 782 */       this.J = null;
/*  694:     */     }
/*  695: 784 */     else if (i1 == 15)
/*  696:     */     {
/*  697: 785 */       str = Long.toString(this.H);
/*  698:     */     }
/*  699: 787 */     else if (i1 == 16)
/*  700:     */     {
/*  701: 788 */       int i2 = this.E + this.I;
/*  702: 789 */       str = this.C.subSequence(this.E, i2).toString();
/*  703: 790 */       this.E = i2;
/*  704:     */     }
/*  705: 792 */     else if ((paramBoolean) && (i1 == 5))
/*  706:     */     {
/*  707: 793 */       str = "true";
/*  708:     */     }
/*  709: 795 */     else if ((paramBoolean) && (i1 == 6))
/*  710:     */     {
/*  711: 796 */       str = "false";
/*  712:     */     }
/*  713: 798 */     else if ((paramBoolean) && (i1 == 7))
/*  714:     */     {
/*  715: 799 */       str = "null";
/*  716:     */     }
/*  717:     */     else
/*  718:     */     {
/*  719: 802 */       throw b("Expected a string but was " + peek());
/*  720:     */     }
/*  721: 804 */     this.G = 0;
/*  722: 805 */     return str;
/*  723:     */   }
/*  724:     */   
/*  725:     */   public boolean nextBoolean()
/*  726:     */   {
/*  727: 816 */     int i1 = this.G;
/*  728: 817 */     if (i1 == 0) {
/*  729: 818 */       i1 = a();
/*  730:     */     }
/*  731: 820 */     if (i1 == 5)
/*  732:     */     {
/*  733: 821 */       this.G = 0;
/*  734: 822 */       return true;
/*  735:     */     }
/*  736: 824 */     if (i1 == 6)
/*  737:     */     {
/*  738: 825 */       this.G = 0;
/*  739: 826 */       return false;
/*  740:     */     }
/*  741: 828 */     throw b("Expected a boolean but was " + peek());
/*  742:     */   }
/*  743:     */   
/*  744:     */   public void nextNull()
/*  745:     */   {
/*  746: 839 */     int i1 = this.G;
/*  747: 840 */     if (i1 == 0) {
/*  748: 841 */       i1 = a();
/*  749:     */     }
/*  750: 843 */     if (i1 == 7) {
/*  751: 844 */       this.G = 0;
/*  752:     */     } else {
/*  753: 847 */       throw b("Expected null but was " + peek());
/*  754:     */     }
/*  755:     */   }
/*  756:     */   
/*  757:     */   public double nextDouble()
/*  758:     */   {
/*  759: 861 */     int i1 = this.G;
/*  760: 862 */     if (i1 == 0) {
/*  761: 863 */       i1 = a();
/*  762:     */     }
/*  763: 866 */     if (i1 == 15)
/*  764:     */     {
/*  765: 867 */       this.G = 0;
/*  766: 868 */       return this.H;
/*  767:     */     }
/*  768: 871 */     if (i1 == 16)
/*  769:     */     {
/*  770: 872 */       int i2 = this.E + this.I;
/*  771: 873 */       this.J = this.C.subSequence(this.E, i2).toString();
/*  772: 874 */       this.E = i2;
/*  773:     */     }
/*  774: 876 */     else if ((i1 == 8) || (i1 == 9))
/*  775:     */     {
/*  776: 877 */       this.J = b(i1 == 8 ? '\'' : '"');
/*  777:     */     }
/*  778: 879 */     else if (i1 == 10)
/*  779:     */     {
/*  780: 880 */       this.J = e();
/*  781:     */     }
/*  782: 882 */     else if (i1 != 11)
/*  783:     */     {
/*  784: 883 */       throw b("Expected a double but was " + peek());
/*  785:     */     }
/*  786: 886 */     this.G = 11;
/*  787: 887 */     double d1 = Double.parseDouble(this.J);
/*  788: 888 */     if ((!this.D) && ((Double.isNaN(d1)) || (Double.isInfinite(d1)))) {
/*  789: 889 */       throw b("JSON forbids NaN and infinities: " + d1);
/*  790:     */     }
/*  791: 891 */     this.J = null;
/*  792: 892 */     this.G = 0;
/*  793: 893 */     return d1;
/*  794:     */   }
/*  795:     */   
/*  796:     */   public long nextLong()
/*  797:     */   {
/*  798: 907 */     int i1 = this.G;
/*  799: 908 */     if (i1 == 0) {
/*  800: 909 */       i1 = a();
/*  801:     */     }
/*  802: 912 */     if (i1 == 15)
/*  803:     */     {
/*  804: 913 */       this.G = 0;
/*  805: 914 */       return this.H;
/*  806:     */     }
/*  807: 917 */     if (i1 == 16)
/*  808:     */     {
/*  809: 918 */       int i2 = this.E + this.I;
/*  810: 919 */       this.J = this.C.subSequence(this.E, i2).toString();
/*  811: 920 */       this.E = i2;
/*  812:     */     }
/*  813: 922 */     else if ((i1 == 8) || (i1 == 9))
/*  814:     */     {
/*  815: 923 */       this.J = b(i1 == 8 ? '\'' : '"');
/*  816:     */       try
/*  817:     */       {
/*  818: 925 */         long l1 = Long.parseLong(this.J);
/*  819: 926 */         this.G = 0;
/*  820: 927 */         return l1;
/*  821:     */       }
/*  822:     */       catch (NumberFormatException localNumberFormatException) {}
/*  823:     */     }
/*  824:     */     else
/*  825:     */     {
/*  826: 934 */       throw b("Expected a long but was " + peek());
/*  827:     */     }
/*  828: 937 */     this.G = 11;
/*  829: 938 */     double d1 = Double.parseDouble(this.J);
/*  830: 939 */     long l2 = d1;
/*  831: 940 */     if (l2 != d1) {
/*  832: 941 */       throw new NumberFormatException("Expected a long but was " + this.J + " at line " + g() + " column " + h());
/*  833:     */     }
/*  834: 944 */     this.J = null;
/*  835: 945 */     this.G = 0;
/*  836: 946 */     return l2;
/*  837:     */   }
/*  838:     */   
/*  839:     */   private String b(char paramChar)
/*  840:     */   {
/*  841: 961 */     CharSequence localCharSequence = this.C;
/*  842:     */     
/*  843: 963 */     int i1 = this.E;
/*  844: 964 */     int i2 = this.F;
/*  845:     */     
/*  846: 966 */     int i3 = i1;
/*  847: 967 */     StringBuilder localStringBuilder = null;
/*  848: 968 */     while (i1 < i2)
/*  849:     */     {
/*  850: 969 */       char c1 = localCharSequence.charAt(i1++);
/*  851: 970 */       if (c1 == paramChar)
/*  852:     */       {
/*  853: 971 */         this.E = i1;
/*  854: 972 */         if (localStringBuilder == null) {
/*  855: 973 */           return localCharSequence.subSequence(i3, i1 - 1).toString();
/*  856:     */         }
/*  857: 976 */         return localStringBuilder.append(localCharSequence, i3, i1 - 1).toString();
/*  858:     */       }
/*  859: 979 */       if (c1 == '\\')
/*  860:     */       {
/*  861: 980 */         this.E = i1;
/*  862: 981 */         if (localStringBuilder == null)
/*  863:     */         {
/*  864: 982 */           if (this.M == null) {
/*  865: 983 */             this.M = new StringBuilder(i1 - i3 + 16);
/*  866:     */           } else {
/*  867: 986 */             this.M.setLength(0);
/*  868:     */           }
/*  869: 988 */           localStringBuilder = this.M;
/*  870:     */         }
/*  871: 990 */         localStringBuilder.append(localCharSequence, i3, i1 - 1);
/*  872: 991 */         localStringBuilder.append(k());
/*  873: 992 */         i1 = this.E;
/*  874: 993 */         i2 = this.F;
/*  875: 994 */         i3 = i1;
/*  876:     */       }
/*  877:     */     }
/*  878:1001 */     this.E = i1;
/*  879:1002 */     throw b("Unterminated string");
/*  880:     */   }
/*  881:     */   
/*  882:     */   private String e()
/*  883:     */   {
/*  884:1009 */     for (int i1 = this.E; i1 < this.F; i1++) {
/*  885:1012 */       switch (this.C.charAt(i1))
/*  886:     */       {
/*  887:     */       case '#': 
/*  888:     */       case '/': 
/*  889:     */       case ';': 
/*  890:     */       case '=': 
/*  891:     */       case '\\': 
/*  892:1018 */         i();
/*  893:     */       case '\t': 
/*  894:     */       case '\n': 
/*  895:     */       case '\f': 
/*  896:     */       case '\r': 
/*  897:     */       case ' ': 
/*  898:     */       case ',': 
/*  899:     */       case ':': 
/*  900:     */       case '[': 
/*  901:     */       case ']': 
/*  902:     */       case '{': 
/*  903:     */       case '}': 
/*  904:     */         break label173;
/*  905:     */       }
/*  906:     */     }
/*  907:     */     label173:
/*  908:1034 */     String str = this.C.subSequence(this.E, i1).toString();
/*  909:1035 */     this.E = i1;
/*  910:1036 */     return str;
/*  911:     */   }
/*  912:     */   
/*  913:     */   private void c(char paramChar)
/*  914:     */   {
/*  915:1041 */     CharSequence localCharSequence = this.C;
/*  916:1042 */     int i1 = this.E;
/*  917:1043 */     int i2 = this.F;
/*  918:1045 */     while (i1 < i2)
/*  919:     */     {
/*  920:1046 */       char c1 = localCharSequence.charAt(i1++);
/*  921:1047 */       if (c1 == paramChar)
/*  922:     */       {
/*  923:1048 */         this.E = i1;
/*  924:1049 */         return;
/*  925:     */       }
/*  926:1051 */       if (c1 == '\\')
/*  927:     */       {
/*  928:1052 */         this.E = i1;
/*  929:1053 */         k();
/*  930:1054 */         i1 = this.E;
/*  931:1055 */         i2 = this.F;
/*  932:     */       }
/*  933:     */     }
/*  934:1062 */     this.E = i1;
/*  935:1063 */     throw b("Unterminated string");
/*  936:     */   }
/*  937:     */   
/*  938:     */   private void f()
/*  939:     */   {
/*  940:1067 */     for (int i1 = this.E; i1 < this.F; i1++) {
/*  941:1069 */       switch (this.C.charAt(i1))
/*  942:     */       {
/*  943:     */       case '#': 
/*  944:     */       case '/': 
/*  945:     */       case ';': 
/*  946:     */       case '=': 
/*  947:     */       case '\\': 
/*  948:1075 */         i();
/*  949:     */       case '\t': 
/*  950:     */       case '\n': 
/*  951:     */       case '\f': 
/*  952:     */       case '\r': 
/*  953:     */       case ' ': 
/*  954:     */       case ',': 
/*  955:     */       case ':': 
/*  956:     */       case '[': 
/*  957:     */       case ']': 
/*  958:     */       case '{': 
/*  959:     */       case '}': 
/*  960:1087 */         this.E = i1;
/*  961:1088 */         return;
/*  962:     */       }
/*  963:     */     }
/*  964:1091 */     this.E = i1;
/*  965:     */   }
/*  966:     */   
/*  967:     */   public int nextInt()
/*  968:     */   {
/*  969:1105 */     int i1 = this.G;
/*  970:1106 */     if (i1 == 0) {
/*  971:1107 */       i1 = a();
/*  972:     */     }
/*  973:1111 */     if (i1 == 15)
/*  974:     */     {
/*  975:1112 */       i2 = (int)this.H;
/*  976:1113 */       if (this.H != i2) {
/*  977:1114 */         throw new NumberFormatException("Expected an int but was " + this.H + " at line " + g() + " column " + h());
/*  978:     */       }
/*  979:1117 */       this.G = 0;
/*  980:1118 */       return i2;
/*  981:     */     }
/*  982:1121 */     if (i1 == 16)
/*  983:     */     {
/*  984:1122 */       int i3 = this.E + this.I;
/*  985:1123 */       this.J = this.C.subSequence(this.E, i3).toString();
/*  986:1124 */       this.E = i3;
/*  987:     */     }
/*  988:1126 */     else if ((i1 == 8) || (i1 == 9))
/*  989:     */     {
/*  990:1127 */       this.J = b(i1 == 8 ? '\'' : '"');
/*  991:     */       try
/*  992:     */       {
/*  993:1129 */         i2 = Integer.parseInt(this.J);
/*  994:1130 */         this.G = 0;
/*  995:1131 */         return i2;
/*  996:     */       }
/*  997:     */       catch (NumberFormatException localNumberFormatException) {}
/*  998:     */     }
/*  999:     */     else
/* 1000:     */     {
/* 1001:1138 */       throw b("Expected an int but was " + peek());
/* 1002:     */     }
/* 1003:1141 */     this.G = 11;
/* 1004:1142 */     double d1 = Double.parseDouble(this.J);
/* 1005:1143 */     int i2 = (int)d1;
/* 1006:1144 */     if (i2 != d1) {
/* 1007:1145 */       throw new NumberFormatException("Expected an int but was " + this.J + " at line " + g() + " column " + h());
/* 1008:     */     }
/* 1009:1148 */     this.J = null;
/* 1010:1149 */     this.G = 0;
/* 1011:1150 */     return i2;
/* 1012:     */   }
/* 1013:     */   
/* 1014:     */   public void close()
/* 1015:     */   {
/* 1016:1157 */     this.G = 0;
/* 1017:1158 */     this.K[0] = 8;
/* 1018:1159 */     this.L = 1;
/* 1019:     */   }
/* 1020:     */   
/* 1021:     */   public void skipValue()
/* 1022:     */   {
/* 1023:1168 */     int i1 = 0;
/* 1024:     */     do
/* 1025:     */     {
/* 1026:1170 */       int i2 = this.G;
/* 1027:1171 */       if (i2 == 0) {
/* 1028:1172 */         i2 = a();
/* 1029:     */       }
/* 1030:1175 */       if (i2 == 3)
/* 1031:     */       {
/* 1032:1176 */         a(1);
/* 1033:1177 */         i1++;
/* 1034:     */       }
/* 1035:1179 */       else if (i2 == 1)
/* 1036:     */       {
/* 1037:1180 */         a(3);
/* 1038:1181 */         i1++;
/* 1039:     */       }
/* 1040:1183 */       else if (i2 == 4)
/* 1041:     */       {
/* 1042:1184 */         this.L -= 1;
/* 1043:1185 */         i1--;
/* 1044:     */       }
/* 1045:1187 */       else if (i2 == 2)
/* 1046:     */       {
/* 1047:1188 */         this.L -= 1;
/* 1048:1189 */         i1--;
/* 1049:     */       }
/* 1050:1191 */       else if ((i2 == 14) || (i2 == 10))
/* 1051:     */       {
/* 1052:1192 */         f();
/* 1053:     */       }
/* 1054:1194 */       else if ((i2 == 8) || (i2 == 12))
/* 1055:     */       {
/* 1056:1195 */         c('\'');
/* 1057:     */       }
/* 1058:1197 */       else if ((i2 == 9) || (i2 == 13))
/* 1059:     */       {
/* 1060:1198 */         c('"');
/* 1061:     */       }
/* 1062:1200 */       else if (i2 == 16)
/* 1063:     */       {
/* 1064:1201 */         this.E += this.I;
/* 1065:     */       }
/* 1066:1203 */       this.G = 0;
/* 1067:1205 */     } while (i1 != 0);
/* 1068:     */   }
/* 1069:     */   
/* 1070:     */   public void skipValues()
/* 1071:     */   {
/* 1072:1209 */     while (hasNext()) {
/* 1073:1210 */       skipValue();
/* 1074:     */     }
/* 1075:     */   }
/* 1076:     */   
/* 1077:     */   private void a(int paramInt)
/* 1078:     */   {
/* 1079:1215 */     if (this.L == this.K.length)
/* 1080:     */     {
/* 1081:1216 */       int[] arrayOfInt = new int[this.L * 2];
/* 1082:1217 */       System.arraycopy(this.K, 0, arrayOfInt, 0, this.L);
/* 1083:1218 */       this.K = arrayOfInt;
/* 1084:     */     }
/* 1085:1220 */     this.K[(this.L++)] = paramInt;
/* 1086:     */   }
/* 1087:     */   
/* 1088:     */   private int g()
/* 1089:     */   {
/* 1090:1224 */     int i1 = 1;
/* 1091:1225 */     for (int i2 = 0; i2 < this.E; i2++) {
/* 1092:1226 */       if (this.C.charAt(i2) == '\n') {
/* 1093:1227 */         i1++;
/* 1094:     */       }
/* 1095:     */     }
/* 1096:1230 */     return i1;
/* 1097:     */   }
/* 1098:     */   
/* 1099:     */   private int h()
/* 1100:     */   {
/* 1101:1234 */     int i1 = 1;
/* 1102:1235 */     for (int i2 = 0; i2 < this.E; i2++) {
/* 1103:1236 */       if (this.C.charAt(i2) == '\n') {
/* 1104:1237 */         i1 = 1;
/* 1105:     */       } else {
/* 1106:1240 */         i1++;
/* 1107:     */       }
/* 1108:     */     }
/* 1109:1243 */     return i1;
/* 1110:     */   }
/* 1111:     */   
/* 1112:     */   private int a(boolean paramBoolean)
/* 1113:     */   {
/* 1114:1261 */     CharSequence localCharSequence = this.C;
/* 1115:1262 */     int i1 = this.E;
/* 1116:1263 */     int i2 = this.F;
/* 1117:     */     for (;;)
/* 1118:     */     {
/* 1119:1265 */       if (i1 == i2)
/* 1120:     */       {
/* 1121:1266 */         this.E = i1;
/* 1122:1267 */         break;
/* 1123:     */       }
/* 1124:1270 */       int i3 = localCharSequence.charAt(i1++);
/* 1125:1271 */       if ((i3 != 10) && 
/* 1126:     */       
/* 1127:     */ 
/* 1128:     */ 
/* 1129:     */ 
/* 1130:1276 */         (i3 != 32) && (i3 != 13) && (i3 != 9)) {
/* 1131:1280 */         if (i3 == 47)
/* 1132:     */         {
/* 1133:1281 */           this.E = i1;
/* 1134:1282 */           if (i1 == i2)
/* 1135:     */           {
/* 1136:1283 */             this.E -= 1;
/* 1137:1284 */             i4 = this.E + 3 < this.F ? 1 : 0;
/* 1138:1285 */             this.E += 1;
/* 1139:1286 */             if (i4 == 0) {
/* 1140:1287 */               return i3;
/* 1141:     */             }
/* 1142:     */           }
/* 1143:1291 */           i();
/* 1144:1292 */           int i4 = localCharSequence.charAt(this.E);
/* 1145:1293 */           switch (i4)
/* 1146:     */           {
/* 1147:     */           case 42: 
/* 1148:1296 */             this.E += 1;
/* 1149:1297 */             if (!a("*/")) {
/* 1150:1298 */               throw b("Unterminated comment");
/* 1151:     */             }
/* 1152:1300 */             i1 = this.E + 2;
/* 1153:1301 */             i2 = this.F;
/* 1154:1302 */             break;
/* 1155:     */           case 47: 
/* 1156:1306 */             this.E += 1;
/* 1157:1307 */             j();
/* 1158:1308 */             i1 = this.E;
/* 1159:1309 */             i2 = this.F;
/* 1160:1310 */             break;
/* 1161:     */           default: 
/* 1162:1313 */             return i3;
/* 1163:     */           }
/* 1164:     */         }
/* 1165:1316 */         else if (i3 == 35)
/* 1166:     */         {
/* 1167:1317 */           this.E = i1;
/* 1168:     */           
/* 1169:     */ 
/* 1170:     */ 
/* 1171:     */ 
/* 1172:     */ 
/* 1173:1323 */           i();
/* 1174:1324 */           j();
/* 1175:1325 */           i1 = this.E;
/* 1176:1326 */           i2 = this.F;
/* 1177:     */         }
/* 1178:     */         else
/* 1179:     */         {
/* 1180:1329 */           this.E = i1;
/* 1181:1330 */           return i3;
/* 1182:     */         }
/* 1183:     */       }
/* 1184:     */     }
/* 1185:1333 */     if (paramBoolean) {
/* 1186:1334 */       throw b("End of input");
/* 1187:     */     }
/* 1188:1337 */     return -1;
/* 1189:     */   }
/* 1190:     */   
/* 1191:     */   private void i()
/* 1192:     */   {
/* 1193:1342 */     if (!this.D) {
/* 1194:1343 */       throw b("Use JsonReaderEx.setLenient(true) to accept malformed JSON");
/* 1195:     */     }
/* 1196:     */   }
/* 1197:     */   
/* 1198:     */   private void j()
/* 1199:     */   {
/* 1200:1353 */     while (this.E < this.F)
/* 1201:     */     {
/* 1202:1354 */       int i1 = this.C.charAt(this.E++);
/* 1203:1355 */       if ((i1 == 10) || (i1 == 13)) {
/* 1204:     */         break;
/* 1205:     */       }
/* 1206:     */     }
/* 1207:     */   }
/* 1208:     */   
/* 1209:     */   private boolean a(String paramString)
/* 1210:     */   {
/* 1211:     */     label81:
/* 1212:1363 */     for (; this.E + paramString.length() <= this.F; this.E += 1) {
/* 1213:1364 */       if (this.C.charAt(this.E) != '\n')
/* 1214:     */       {
/* 1215:1369 */         for (int i1 = 0; i1 < paramString.length(); i1++) {
/* 1216:1370 */           if (this.C.charAt(this.E + i1) != paramString.charAt(i1)) {
/* 1217:     */             break label81;
/* 1218:     */           }
/* 1219:     */         }
/* 1220:1374 */         return true;
/* 1221:     */       }
/* 1222:     */     }
/* 1223:1376 */     return false;
/* 1224:     */   }
/* 1225:     */   
/* 1226:     */   public String toString()
/* 1227:     */   {
/* 1228:1381 */     return getClass().getSimpleName() + " at line " + g() + " column " + h();
/* 1229:     */   }
/* 1230:     */   
/* 1231:     */   private char k()
/* 1232:     */   {
/* 1233:1394 */     if (this.E == this.F) {
/* 1234:1395 */       throw b("Unterminated escape sequence");
/* 1235:     */     }
/* 1236:1398 */     char c1 = this.C.charAt(this.E++);
/* 1237:1399 */     switch (c1)
/* 1238:     */     {
/* 1239:     */     case 'u': 
/* 1240:1401 */       if (this.E + 4 > this.F) {
/* 1241:1402 */         throw b("Unterminated escape sequence");
/* 1242:     */       }
/* 1243:1405 */       int i1 = 0;
/* 1244:1406 */       int i2 = this.E;
/* 1245:1406 */       for (int i3 = i2 + 4; i2 < i3; i2++)
/* 1246:     */       {
/* 1247:1407 */         int i4 = this.C.charAt(i2);
/* 1248:1408 */         i1 = (char)(i1 << 4);
/* 1249:1409 */         if ((i4 >= 48) && (i4 <= 57)) {
/* 1250:1410 */           i1 = (char)(i1 + (i4 - 48));
/* 1251:1412 */         } else if ((i4 >= 97) && (i4 <= 102)) {
/* 1252:1413 */           i1 = (char)(i1 + (i4 - 97 + 10));
/* 1253:1415 */         } else if ((i4 >= 65) && (i4 <= 70)) {
/* 1254:1416 */           i1 = (char)(i1 + (i4 - 65 + 10));
/* 1255:     */         } else {
/* 1256:1419 */           throw new NumberFormatException("\\u" + this.C.subSequence(this.E, this.E + 4));
/* 1257:     */         }
/* 1258:     */       }
/* 1259:1422 */       this.E += 4;
/* 1260:1423 */       return i1;
/* 1261:     */     case 't': 
/* 1262:1426 */       return '\t';
/* 1263:     */     case 'b': 
/* 1264:1429 */       return '\b';
/* 1265:     */     case 'n': 
/* 1266:1432 */       return '\n';
/* 1267:     */     case 'r': 
/* 1268:1435 */       return '\r';
/* 1269:     */     case 'f': 
/* 1270:1438 */       return '\f';
/* 1271:     */     }
/* 1272:1449 */     return c1;
/* 1273:     */   }
/* 1274:     */   
/* 1275:     */   private JsonParseException b(String paramString)
/* 1276:     */   {
/* 1277:1458 */     throw new JsonParseException(paramString + " at line " + g() + " column " + h());
/* 1278:     */   }
/* 1279:     */   
/* 1280:     */   private static final class JsonScope
/* 1281:     */   {
/* 1282:     */     static final int EMPTY_ARRAY = 1;
/* 1283:     */     static final int NONEMPTY_ARRAY = 2;
/* 1284:     */     static final int EMPTY_OBJECT = 3;
/* 1285:     */     static final int DANGLING_NAME = 4;
/* 1286:     */     static final int NONEMPTY_OBJECT = 5;
/* 1287:     */     static final int EMPTY_DOCUMENT = 6;
/* 1288:     */     static final int NONEMPTY_DOCUMENT = 7;
/* 1289:     */     static final int CLOSED = 8;
/* 1290:     */   }
/* 1291:     */ }



/* Location:           E:\idea\

 * Qualified Name:     org.jetbrains.io.JsonReaderEx

 * JD-Core Version:    0.7.0.1

 */